import axios from "axios";

import { MessageBox, Message } from 'element-ui' //在js文件中，需单独引入提示


// 1.创建axios的实例
const instance = axios.create({
    baseURL: "http://timemeetyou.com:8889/api/private/v1/",
    timeout: 5000,

});

// 配置请求拦截器-常见的就是统一加入请求头
instance.interceptors.request.use(
    config => {
        // 在发送请求之前做某件事-若是有做鉴权token , 就给头部带上token
        if (localStorage.getItem('token')) {
            config.headers.Authorization = localStorage.getItem('token');
        }
        //  console.log('发送中',config); //config就是axios里返回的promise对象
        return config;
    },
    err => {
        // console.log('发送失败');
        return err;
    }
);

//配置响应拦截器——对响应数据做些事,常见的就是设置一些统一错误弹窗
instance.interceptors.response.use(
    response => {
        //  console.log('响应成功',response);
        // 后台返回的状态码
        const code = response.data.meta.status || 200
            // 后台 返回的 错误 信息
        const msg = response.data.meta.msg


        if (msg == "无效token") {
            MessageBox.confirm('登录状态已过期，您可以继续留在该页面，或者重新登录', '系统提示', {
                confirmButtonText: '重新登录',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                location.href = '/';
            }).catch(() => {}); //!!!这里要带着catch，捕捉未知错误信息
        } else if (code !== 200) {

            Message.error({
                duration: 1000,
                type: 'warning',
                message: msg
            })


        } else {

            return response.data;
        }

    },
    err => {
        if (err && err.response) {
            switch (err.response.status) {
                case 400:
                    err.message = "请求错误";
                    break;
                case 401:
                    err.message = "未授权的访问";
                    break;
            }
        }
        // console.log('响应失败1');
        return err;

    }
);

export default instance